Method and apparatus for isolating storage devices to facilitate reliable communication

ABSTRACT

A method for maintaining reliable communication on a link between an expander and a storage device is provided. The method includes detecting, by a processor coupled to the link, an error corresponding to the link, and maintaining a count of detected errors for the link, by the processor. The method also includes determining, by the processor, if the count of detected errors is above a first error threshold. If the count of detected errors is not above the first error threshold, then the method repeats the detecting, maintaining, and determining steps. If the count of detected errors is above the first error threshold, then the method provides the processor placing the storage device into a segregated zone.

FIELD

The present invention is directed to computer data storage interfaces.In particular, the present invention is directed to methods andapparatuses for isolating storage devices and links between expandersand storage devices in order to facilitate reliable communication.

BACKGROUND

Serial-Attached-SCSI (SAS) systems are becoming more common in moderncomputing and data processing systems. SAS systems include SAS initiatordevices and SAS target devices as does its parent, the Small ComputerSystems Interface (SCSI). SAS target devices are typically storagedevices, such as disk drives, that receive commands from SAS initiatordevices, such as SAS host bus adapters in host computers or SAS I/Ocontrollers in Redundant Arrays of Inexpensive Disks (RAID) controllers.

Implementations and uses of SAS are described in detail in the followingdocuments, each of which is incorporated by reference in its entiretyfor all intents and purposes:

-   -   “Serial Attached SCSI—2.1 (SAS-2.1)”, Revision 02, 19 May 2009.        Working Draft, Project T1012125-D, American National Standard        Institute.    -   “Information technology—SAS Protocol Layer (SPL)”, Revision 02,        19 May 2009. Working Draft, Project T1012124-D, American        National Standard Institute.

SAS systems are built on point-to-point serial connections between SASdevices. Each point-to-point connection is referred to as a link, andthe two endpoints are individually referred to as a Physical Interface(PHY). A PHY contains a transmitter device (TX) and a receiver device(RX) and electrically interfaces to a link to communicate with anotherPHY at the other end of the link. The link includes two differentialsignal pairs; one pair in each direction. A SAS port includes one ormore PHYs. A SAS port that has more than one PHY grouped together isreferred to as a wide port, and the more than one link coupling the twowide ports are referred to as a wide link. Wide ports and wide linksprovide increased data transfer rates between SAS endpoints and enablemultiple simultaneous connections to be open between a SAS initiator andmultiple SAS targets.

The simplest SAS topology is a single SAS initiator having a SAS portthat is connected by a single SAS link to a SAS port of a single SAStarget. However, it is desirable in many applications, such as a highdata availability RAID system, to enable one or more SAS initiators tocommunicate with multiple SAS target devices. In addition to initiatorsand targets, SAS includes a third type of device, expanders, which areemployed in SAS systems to achieve more complex topologies. SASexpanders perform switch-like functions, such as routing, to enable SASinitiators and targets to communicate via the SAS point-to-pointconnections.

SUMMARY

The present invention is directed to solving disadvantages of the priorart. In accordance with embodiments of the present invention, a methodfor maintaining reliable communication on a link between an expander anda storage device is provided. The method includes detecting, by aprocessor coupled to the link, an error corresponding to the link, andmaintaining, by the processor, a count of detected errors for the link.The method also includes determining, by the processor, if the count ofdetected errors is above a first error threshold. If the count ofdetected errors is not above the first error threshold, then the methodrepeats the detecting, maintaining, and determining steps. If the countof detected errors is above the first error threshold, then the methodincludes placing, by the processor, the storage device into a segregatedzone.

In accordance with other embodiments of the present invention, a systemfor maintaining reliable communication on a link between an expander anda storage device is provided. The system includes a processor, a storagedevice, and a link, coupled to the processor and the storage device. Theprocessor detects an error corresponding to the link, maintains a countof detected errors for the link, and determines if the count of detectederrors is above a first error threshold. If the count of detected errorsis not above the first error threshold, the processor repeats detects,maintains, and determines. If the count of detected errors is above thefirst error threshold, then the processor places the storage device intoa segregated zone.

In accordance with still other embodiments of the present invention, amethod for maintaining reliable communication on a link between anexpander and a storage device is provided. The method includesdetecting, by a processor coupled to the link, an error corresponding tothe link, and providing, by the processor, an indication of the errorcorresponding to the link to a controller coupled to the processor. Themethod includes maintaining, by the controller, a count of detectederrors for the link, and determining, by the controller, if the count ofdetected errors is above a first error threshold. If the count ofdetected errors is not above the first error threshold, then the methodrepeats detecting, providing, maintaining, and determining. If the countof detected errors is above the first error threshold, then the methodincludes transferring, by the controller, a command to the processor toplace the storage device into a segregated zone, and placing, by theprocessor, the storage device into the segregated zone.

Advantages of the present invention include a method to restorecommunications to a SAS link when a storage device misbehaves and causesmultiple, or even continuous, configuration changes. Configurationchanges cause time-consuming device discovery processes to be initiated,which prevents normal I/O traffic over interconnected links while devicediscovery is taking place. By removing a misbehaving storage device fromthe active domain, further configuration changes are prevented andnormal I/O traffic is allowed to resume among all interconnected links.Normal I/O traffic occurs as part of regular operation, when data readsand writes are allowed to storage devices, and storage devicesparticipate in device discovery processes. Storage devices preventedfrom participating in regular operation are prohibited fromparticipating in device discovery processes, and in most cases are notpresented with data read or write operations unless the data read orwrite operations are specifically allowed as part of segregated zonetesting.

Another advantage of the present invention is it is able to restorestorage devices to operational status autonomously and with minimaldisruption to the system as a whole. Testing is performed on segregatedstorage devices while the segregated devices are still interconnected tostorage controllers. In some embodiments, the testing is performedautomatically, and segregated storage devices may be restored tooperational status without a need for user intervention or systemdisruption. This minimizes interruptions to busy system administrators,allowing a single system administrator to manage a greater number ofresources.

Another advantage of the present invention is it is able to preserveproven system configurations by isolating unproven or unqualifiedstorage devices when they are added to a data storage system. Even if nospecific errors are found, the segregation mechanism allows one or moreunqualified storage devices to be isolated and flagged to a user orsystem administrator. If necessary, the user or system administrator mayoverride the segregation and force the data storage system to integratethe unqualified storage devices, such as may be required in an emergencyor disaster situation.

Another advantage of the present invention is it is able to dynamicallymanage a pool of segregated storage devices. The pool may be any size,and storage devices may be added to the pool or removed from the pool atany time, depending on testing status and override conditions.

A final advantage of the present invention is it provides forhierarchical management of storage devices in data storage systems.Although many low-level functions may be performed by expanders andstorage controllers, embodiments of the present invention allow forusers or system administrators to exert the greatest level of controlover any decisions made with respect to segregation or un-segregation ofany storage device. In some embodiments, error counts and test resultsare provided to a system administrator, who then makes individualdecisions about segregation or un-segregation. In other embodiments,segregation or un-segregation decisions made by storage controllers orexpanders are provided to system administrators, who may then overridethose decisions based on their own knowledge and objectives.

Additional features and advantages of embodiments of the presentinvention will become more readily apparent from the followingdescription, particularly when taken together with the accompanyingdrawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 a is a block diagram illustrating components of a firstelectronic data storage system incorporating a data storage system inaccordance with embodiments of the present invention.

FIG. 1 b is a block diagram illustrating components of a secondelectronic data storage system incorporating a data storage system inaccordance with embodiments of the present invention.

FIG. 1 c is a block diagram illustrating components of a thirdelectronic data storage system incorporating one or more data storagesystems in accordance with embodiments of the present invention.

FIG. 1 d is a block diagram illustrating components of a fourthelectronic data storage system incorporating one or more data storagesystems in accordance with embodiments of the present invention.

FIG. 2 is a block diagram illustrating components of a storagecontroller in accordance with embodiments of the present invention.

FIG. 3 is a block diagram illustrating components of a data storagesystem incorporating a storage enclosure in accordance with embodimentsof the present invention.

FIG. 4 is a block diagram illustrating a data storage systemincorporating a segregated zone in accordance with embodiments of thepresent invention.

FIG. 5 is a block diagram illustrating PHY error counters for abidirectional link between an expander and a storage device inaccordance with embodiments of the present invention.

FIG. 6 a is a block diagram illustrating a data storage system usingexpander control in accordance with the preferred embodiment of thepresent invention.

FIG. 6 b is a block diagram illustrating a data storage system usingexpander control with controller override in accordance with embodimentsof the present invention.

FIG. 6 c is a block diagram illustrating a data storage system usingexpander control with administrative computer override in accordancewith embodiments of the present invention.

FIG. 6 d is a block diagram illustrating a data storage system usingstorage controller control in accordance with embodiments of the presentinvention.

FIG. 6 e is a block diagram illustrating a data storage system usingstorage controller control with administrative computer override inaccordance with embodiments of the present invention.

FIG. 6 f is a block diagram illustrating a data storage system usingadministrative computer control in accordance with embodiments of thepresent invention.

FIG. 7 is a flowchart illustrating expander initialization in accordancewith embodiments of the present invention.

FIG. 8 is a flowchart illustrating expander control of a segregated zonein accordance with embodiments of the present invention.

FIG. 9 is a flowchart illustrating expander link testing in accordancewith embodiments of the present invention.

FIG. 10 is a flowchart illustrating expander link testing failure inaccordance with embodiments of the present invention.

FIG. 11 is a flowchart illustrating storage controller control of asegregated zone in accordance with embodiments of the present invention.

FIG. 12 is a flowchart illustrating administrative computer control of asegregated zone in accordance with embodiments of the present invention.

FIG. 13 a is a flowchart illustrating storage controller override ofexpander segregation in accordance with embodiments of the presentinvention.

FIG. 13 b is a flowchart illustrating storage controller segregation notbased on error counts in accordance with embodiments of the presentinvention.

FIG. 14 a is a flowchart illustrating administrative computer overrideof expander segregation in accordance with embodiments of the presentinvention.

FIG. 14 b is a flowchart illustrating administrative computersegregation not based on error counts in accordance with embodiments ofthe present invention.

DETAILED DESCRIPTION

The present inventors have observed various problems in complex topologysystems having many paths between initiators and targets. Such systemsinclude data storage systems having one or more storage controllers andmany storage devices, and possibly two or more daisy-chained storageenclosures. Today, some link or storage device reliability problems havebeen observed with 6 Gigabit per second (Gb/s) SAS storage devices.Although Serial Attached SCSI (SAS) technology is currently limited to 6Gb/s transfer rates, it is expected that SAS will have 12 Gb/s devicesavailable in the near future. The present inventors observed highertransmission error rates at the faster transmission speeds, especiallyover the SAS link between an expander and a storage device. Transmissionerrors due to signal degradation often results in the need to resendcommands multiple times, thereby causing delays and effectively reducinglink bandwidth. In severe cases, a target device may stop respondingaltogether, resulting in inaccessible data. Such a loss may, forexample, cause a Redundant Array of Inexpensive Disks (RAID) array tobecome critical even when no actual storage device failure has occurred,which then requires time-consuming data reconstruction. Other linkfailures have an intermittent nature, where a storage device behaves andresponds normally at some times and not respond at other times. Thelatter behavior may cause the data storage system to initiate devicediscovery processes in order to determine exactly which devices are nowconnected. During the device discovery process, normal data I/Ooperations are suspended and the data storage system productivity isinterrupted. Therefore, it is advantageous to prevent misbehavingstorage devices from participating in device discovery operations.

Hard storage device failures require the failure to be detected, a useror system administrator to be notified, the storage device physicallyreplaced, and the volume containing the failed storage device to bereconstructed. However, in cases where there is no storage device hardfailure, it is advantageous to attempt to make a misbehaving storagedevice stable and continue to make use of the device. This saves systemadministrator time as well as returning a RAID storage volume to a fullyoperational state usually faster than replacing and rebuilding thestorage device.

SAS specifications provide for link training in order to establish alink. Link training is a short series of data transfers between eachtransmitter and receiver across a link to determine if basiccommunication is possible on each SAS link, and is generally performedat power-up, after a detected topology change, or after manual reset ofan initiator. Current solutions utilize a single set of PHY parametersfor link training Typically, the link training PHY parameters are eitheran average of a known set of PHY parameters for various receivers, orthe PHY parameters for a given receiver. However, neither is ideal sinceoptimal parameters for a given receiver or target device are usuallydifferent than average PHY parameters or the parameters for a specificdevice if the actual receiver or target is different. Although SAS linktraining establishes if basic communication is possible, it is not anongoing activity or establishes that reliable communication is possibleon a link. Link training may possibly establish that basic communicationis possible at a given transmission speed, but communicating at thegiven transmission speed may produce a higher than desired transmissionerror rate. Therefore, what is needed is a means to achieve ongoingreliable link communications between a transmitter and receiver,especially if communication conditions change between the transmitterand receiver.

Although the present invention is described with respect to SAStechnology, it should be understood that the system and processes of thepresent invention apply to any such point-to-point interface storagedevice interface technology including Serial ATA (SATA).

Referring now to FIG. 1 a, a block diagram illustrating components of afirst electronic data storage system 100 incorporating a storageenclosure 128 in accordance with embodiments of the present invention isshown. The electronic data storage system 100 includes one or more hostcomputers 116. Host computer 116 is generally a server, but could alsobe a desktop or mobile computer. Host computer 116 executes applicationprograms that generate read and write requests to storage devices 132 a,132 b. Host computer 116 includes one or more storage controllers 120,although only a single storage controller 120 is illustrated forclarity. In one embodiment, storage controller 120 is a host busadapter. In another embodiment, storage controller 120 is a RAIDcontroller. In yet another embodiment, storage controller 120 representsa pair of dual redundant RAID controllers. Storage controller 120 mayeither be integrated on the motherboard of host computer 116, or may bean add-in board or other form of assembly in host computer 116. Storagecontroller 120 is described in more detail with respect to FIG. 2. Inone embodiment, host computer 116 executes the steps of the presentinvention assigned to an “administrative computer” illustrated in FIGS.8-14 b.

Storage controller 120 transfers data to and from storage devices 132 a,132 b in storage enclosure 128, over SAS links 124 and wide SAS link236. In one embodiment, wide SAS link includes 4 SAS lanes. Storageenclosure 128 includes one or more SAS expanders 140, which performswitching functions, and transfers data and commands between storagecontroller 120 and storage devices 132 a, 132 b. In general, thetransmit and receive paths of SAS links 124 to storage devices 132 aresingle lane SAS connections. However, in the future it is possible eachtransmit or receive path could be a multiple lane SAS link 124. Each SASlink 124 between SAS expander 140 and storage devices 132 includesseparate transmit and receive paths, and each storage device 132generally has two ports for independent interconnection to different SASexpanders 140 as illustrated in FIG. 3. Storage devices 132 are storageperipheral devices including, but not limited to hard disk drives, solidstate drives, tape drives, and optical drives.

Referring now to FIG. 1 b, a block diagram illustrating components of asecond electronic data storage system 104 incorporating a storageenclosure 148 in accordance with embodiments of the present invention isshown. Host computer 136 performs most of the functions previouslydescribed with respect to host computer 116, although the “controller”or “storage controller” functions of FIGS. 8-14 b are instead performedby storage controller 144. Storage enclosure 148 is similar to storageenclosure 128, except that one or more storage controllers 144 arepresent. Storage controller 144 is described in more detail with respectto FIG. 2. In one embodiment, storage controller 144 is a RAIDcontroller. In another embodiment, storage controller 144 represents apair of dual redundant RAID controllers. Host computer 136 communicateswith storage enclosure 148, including storage controller 144, over hostbus or network 152. Host bus or network 152 is any suitable bus ornetwork that allows high speed data transfer between host computer 136and storage controller 144. Examples of host bus or network 152 include,but are not limited to, SCSI, Fibre Channel, SSA, SCSI, SAS, iSCSI,Ethernet, Infiniband, ESCON, ATM, and FICON. In some embodiments, hostbus or network 152 is a storage area network (SAN).

Referring now to FIG. 1 c, a block diagram illustrating components of athird electronic data storage system 108 incorporating storageenclosures 128 in accordance with embodiments of the present inventionis shown. Electronic data storage system 108 is similar to electronicdata storage system 100 of FIG. 1 a, but additional storage enclosures128 b, 128 c are provided to support additional storage devices 132 c,132 d, 132 e, and 132 f. In one embodiment, storage controller 120 is ahost bus adapter. In another embodiment, storage controller 120 is aRAID controller. In yet another embodiment, storage controller 120represents a pair of dual redundant RAID controllers. In order tosupport additional storage enclosures 128 b, 128 c, SAS expanders 140utilize daisy chain buses 156. Daisy chain bus 156 utilizes the sameprotocol as SAS links 124, and is generally a SAS wide bus 236 having 4SAS lanes. Daisy chain bus 156 a interconnects SAS expander 140 a andSAS expander 140 b. Daisy chain bus 156 b interconnects SAS expander 140b and SAS expander 140 c. Daisy chain bus 156 c interconnects SASexpander 140 c and another storage enclosure 128, in a similar fashionto daisy chain buses 156 a and 156 b. In one embodiment, each storageenclosure 128 supports twelve storage devices 132 and each storagecontroller 120 supports up to 128 storage devices 132. However, in otherembodiments each storage enclosure 128 may support more or fewer than 12storage devices 132, and each storage controller 120 may support more orfewer than 128 storage devices 132.

Referring now to FIG. 1 d, a block diagram illustrating components of afourth electronic data storage system 112 incorporating a storageenclosure 148 and multiple storage enclosures 128 in accordance withembodiments of the present invention is shown. Electronic data storagesystem 112 is similar to electronic data storage system 104 of FIG. 1 b,but additional storage enclosures 128 b, 128 c are provided to supportadditional storage devices 132 c, 132 d, 132 e, and 132 f. In oneembodiment, storage controller 144 is a RAID controller. In anotherembodiment, storage controller 144 represents a pair of dual redundantRAID controllers. In order to support additional storage enclosures 128a, 128 b, SAS expanders 140 utilize daisy chain buses 156. Daisy chainbus 156 utilizes the same protocol as SAS links 124, and is generally aSAS wide bus 236 having 4 SAS lanes. Daisy chain bus 156 a interconnectsSAS expander 140 a and SAS expander 140 b. Daisy chain bus 156 binterconnects SAS expander 140 b and SAS expander 140 c. Daisy chain bus156 c interconnects SAS expander 140 c and another storage enclosure128, in a similar fashion to daisy chain buses 156 a and 156 b. In oneembodiment, each storage enclosure 128 supports twelve storage devices132 and each storage controller 144 supports up to 128 storage devices132. However, in other embodiments each storage enclosure 128 maysupport more or fewer than 12 storage devices 132, and each storagecontroller 144 may support more or fewer than 128 storage devices 132.

Referring now to FIG. 2, a block diagram illustrating components of astorage controller 120, 144 in accordance with embodiments of thepresent invention is shown. Although FIG. 2 illustrates key componentsof storage controller 120, 144 or controller, it should be noted thatall components illustrated in FIG. 2, with the exception of hostinterface 220, are present in an administrative computer such as hostcomputer 116 or 136. Storage controller 120, 144 includes a CPU 204,which executes stored programs that manage data transfers between hostcomputers 116, 136 and storage devices 132. CPU 204 includes anyprocessing device suitable for executing storage controller 120, 144programs, such as Intel x86-compatible processors, embedded processors,mobile processors, field programmable gate arrays (FPGAs) with internalprocessors, and/or RISC processors. CPU 204 may include several devicesincluding memory controllers, North Bridge devices, and/or South Bridgedevices. Host computers 116, 136 generates read and write I/O requestsover host bus or network 152 to host Interface 220. Multiple hostcomputers 116, 136 may interact with storage controller 120, 144 overhost bus or network 152.

CPU 204 is coupled to storage controller memory 208. Storage controllermemory 208 includes both non-volatile memory 216 and volatile memory212. The non-volatile memory 216 stores the program instructions thatCPU 204 fetches and executes, including program instructions for theprocesses of FIGS. 8-10. Examples of non-volatile memory 216 include,but are not limited to, flash memory, SD, EPROM, EEPROM, hard disks, andNOVRAM. Volatile memory 212 stores various data structures and in someembodiments contains a read cache, a write cache, or both. Examples ofvolatile memory 212 include, but are not limited to, DDR RAM, DDR2 RAM,DDR3 RAM, and other forms of temporary memory.

In some embodiments, volatile memory 212 includes revised thresholds244. Revised thresholds 244 include revised error thresholds 248, orfirst error thresholds, used for placing storage devices into segregatedzones, and revised test thresholds 252, or second error thresholds, usedfor removing storage devices from segregated zones. In some embodiments,revised thresholds 244 are stored in non-volatile memory 216, or bothvolatile memory 212 and non-volatile memory 216. In some embodiments,expanders 140 provide error counts and/or test results to storagecontroller 120, 144, so that storage controller 120, 144 makes decisionsabout placing or removing storage devices 132 to or from segregatedzones. In other embodiments, revised thresholds 244 allow storagecontroller 120, 144 to override segregation decisions made by expanders140.

Storage controller 120, 144 may have one host interface 220, or multiplehost interfaces 220. Storage controller 120, 144 has one or moreprotocol controller devices 232, which pass signals over one or morewide SAS links 236 to one or more expanders 140. In a preferredembodiment, protocol controller 232 is a SAS protocol controller 232.CPU 204 generates target device I/O requests 240 to protocol controller232. In one embodiment, the protocol controller 232 is an LSI 2008 6Gigabit per second (Gb/s) SAS controller and the expander 140 is a36-port PMC PM8005 device. The electronic data storage systems 108, 112may include multiple SAS paths 124, 236, 156 and multiple storageenclosures 128, 148.

Storage enclosures 128, 148 include a number of storage devices 132. Inone embodiment, storage enclosures 128, 148 include up to twelve (12)storage devices 132. In another embodiment, storage enclosures 128, 148include twenty-four (24) storage devices 132. However, the number ofstorage devices 132 may be less or more than twelve or twenty four.Multiple storage enclosures 128, 148 may be daisy chained with daisychain buses 156 a, 156 b, 156 c in order to increase the number ofstorage devices 132 controlled by storage controllers 120, 144.

Expanders 140 a, 140 b, and 140 c transfer data, commands, and status toand from storage devices 132. In general, the transmit and receive pathsto storage devices 132 are single lane SAS connections. However, in thefuture it is possible each transmit or receive path could be a multiplelane SAS connection, or some other form of connection.

Each storage controller 120, 144 also includes a Management controller224. CPU 204 reports status changes and errors to the Managementcontroller 224, which communicates status changes for storage controller120, 144 and errors to one or more administrative computers 116, 136over management network 228. Management controller 224 also receivescommands from one or more administrative computers 116, 136 overmanagement network 228. Management network 228 is any bus or networkcapable of transmitting and receiving data from a remote computer, andincludes Ethernet, RS-232, Fibre Channel, ATM, SAS, SCSI, Infiniband, orany other communication medium. Such a communication medium may beeither cabled or wireless. In some storage controllers 120, 144, statuschanges and errors are reported to an administrative computer 116, 136through host interface 220 over host bus or network 152.

As can be seen in FIG. 1 c or 1 d, there may be many links betweenendpoints. For example, in FIG. 1 d, storage controller 144 may transmitan I/O request to storage device 132 e. This requires a transfer fromprotocol controller 232 through expander 140 a over a wide SAS link 236,across daisy chain bus 156 a, SAS expander 140 b, daisy chain bus 156 b,SAS expander 140 c to disk 132 e in storage enclosure 128 b.

Referring now to FIG. 3, a block diagram illustrating components of astorage enclosure 128, 148 in accordance with embodiments of the presentinvention is shown. In the case of a storage enclosure 148, storagecontroller(s) 144 are not illustrated in FIG. 3 for simplicity. However,it should be understood that storage controller(s) 120, 144 interconnectto expander 140 through wide SAS link 236, as shown in FIGS. 1 b and 1d. A system may utilize the present invention on the various SAS linksbetween expanders 140 and storage devices 132, resulting in system-levellink reliability improvements. Although a protocol controller 232 of astorage controller 120, 144 is the initiator for any I/O requestaddressed to a specific target device 132, the SAS signals pass throughat least one expander 140.

The storage enclosure 128, 148 of FIG. 3 includes a plurality of storagedevices 132 interconnected to one or more expanders 140 through amidplane 336, which may be designed to support a given number of storagedevices 132. Protocol controller 232 is the initiator, and storagedevices 132 are target devices. In one embodiment, the midplane 336supports 12 storage devices 132. In another embodiment, the midplane 336supports 24 storage devices 132. The storage devices 132 are typicallyindividually hot-pluggable to aid in quick field replacement, inconjunction with RAID or redundant storage arrangements. For simplicity,only four storage devices 132 a-132 d are shown, with each storagedevice 132 having a separate transmit and receive path to the midplane336. Storage devices 132 are typically dual-ported, with two sets oftransmit and receive paths to expander PHYs 312. However, only onetransmit and receive path is shown interconnected to expander PHYs 312for each storage device 132 for simplicity. Storage devices 132 may haveany number of ports, from one to four or more.

Expander 140 includes an expander CPU 304, or processor, and expandermemory 308, and multiple physical interfaces or PHYs 312 a-312 d. EachPHY 312 has a transmit port 316 and a receive port 320. Each PHY 312 istherefore coupled to a different port of a storage device 132 throughthe midplane 336. For example, transmit port 316 c and receive port 320c of PHY 312 c are coupled to storage device 132 c. Connections tostorage devices 132 typically have only a single SAS lane per port, withdual ports as shown.

Storage enclosure 128, 148 has a non-volatile memory 324 coupled toexpander 140. Examples of non-volatile memory 324 include, but are notlimited to, flash memory, SD, compact flash, EPROM, EEPROM, and NOVRAM.The non-volatile memory 324 stores program instructions that areexecuted by the expander CPU 304 of expander 140. The programinstructions are organized as expander boot code 328 andcustomer-specific code 332. The expander boot code 328 consists ofprogram instructions to internally configure the expander 140 andboot-time diagnostics to make sure the expander 140 is internallyoperational. The customer-specific boot code 332 consists of programinstructions that initially configure PHY 312 parameters and perform theexpander 140 process steps of FIGS. 7-14 b. The expander 140 functionsafter power-on by reading expander boot code 328 and customer-specificcode 332 into expander memory 308. Once both sets of code are stored inexpander memory 308, expander CPU 304 first executes the expander bootcode 328 followed by the customer-specific code 332. The controllerprocess steps of FIGS. 7-14 b are executed by CPU 204 of storagecontroller 120, 144, and the administrative computer process steps ofFIGS. 7-14 b are executed by CPU 204 of administrative computer 116 or136.

Customer-specific code 332 includes default thresholds 336. Defaultthresholds 336 include error thresholds 340, or first error thresholds,used for placing storage devices into segregated zones, and testthresholds 344, or second error thresholds, used for removing storagedevices 132 from segregated zones. Default thresholds 336 are loadedinto the expander 140 at boot time. The customer-specific code 332 isfield upgradable, allowing a storage controller 120, 144 to upgradeanything in the customer-specific code 332, including default thresholds336. Therefore, default thresholds 336 may be changed in order to takeinto account additional testing, new types of storage devices 132, orthe frequency of segregating/un-segregating individual storage devices132.

Each of the individual links between a PHY port 316, 320 and a storagedevice 132 has different routing through semiconductor devices, cables,connectors, PCB traces and so on. Therefore, path lengths and electricalcharacteristics will vary between links. In addition to path lengthvariations, other factors affect electrical performance of links.Manufacturing differences between components, connector fit variances,PCB trace impedance, and inconsistent PCB routing contribute toelectrical differences between paths. When a component is marginal orgoes bad, such as a SAS device that generates logical errors, it may becaused by improper PHY analog settings, a bad or marginal PHY, or a bador marginal link, which may include bad or marginal cables, connectors,or printed circuit board assembly traces. Some of the manifestations ofthe faulty components include intermittent communication errors betweenSAS devices, spurious transmit errors, or complete loss of a SAS link.Another manifestation is the inability for a SAS initiator to see a SAStarget in the topology due to intermittent failures that cause a SASdevice to work sufficiently well to be allowed into the topology, but tobe sufficiently faulty to prevent effective communication between SASdevices. These problems are exacerbated at higher SAS transfer speeds.For example, today SAS devices support transfer rates of 1.5, 3, or 6Gb/s. Soon, devices will be available that can support up to 12 Gb/stransfer rates. Transfer rates beyond 12 Gb/s are expected to beachievable in the future.

One method of dealing with errors due to signal integrity problemsbetween expanders 140 and storage devices 132 is to attempt to identifythe faulty component and send a command through either the SAS domain orother bus such as an Inter-Integrated Circuit (I²C) or UniversalAsynchronous Receiver/Transmitter (UART) bus to disable, or bypass,various PHYs 312 in the domain in a trial-and-error approach until theinitiator has isolated the problem. However, some failure scenarioscannot be satisfactorily remedied by this approach. For example, assumea component fails in an intermittent fashion, such as a marginal PHY312, that causes an expander 140 to first detect that a SAS link isoperating properly, to subsequently detect that the link is notoperating properly, and to continue this sequence for a relatively longtime. According to the SAS standard, the expander 140 is required totransmit a BROADCAST primitive on each of its SAS ports to notify otherSAS devices of the change of status within the SAS domain. Each time aSAS initiator receives the BROADCAST primitive it is required to performa SAS discover process to discover the device type, SAS address, andsupported protocols of each SAS device in the SAS domain and toconfigure routing tables within the expanders 140 as needed. The SASdiscover process can take a relatively large amount of time to complete.If an expander 140 transmits BROADCAST primitives due to theoperational-to-non-operational link transitions according to a periodthat is comparable to the SAS discover process time, then consequentlythe SAS initiator may be unable to effectively send commands though theSAS domain to identify and remedy the problem. Even if the initiator issuccessful in identifying and fixing the problem, the SAS domain mayhave been effectively unavailable for providing user data transfers foran unacceptable length of time.

Another potential problem in SAS systems is the fact that the SASstandard allows cables that connect SAS PHYs 312 to be anywhere within arelatively large range of lengths. For example, the SAS specificationcurrently allow for cable lengths up to eight meters. The length of theSAS cable may significantly impact the quality of the signals receivedon the SAS link between two SAS PHYs 312. The present invention providesa solution to improve the data availability in SAS systems, which aresubject to the foregoing problems.

Referring now to FIG. 4, a block diagram illustrating a data storagesystem 400 incorporating a segregated zone 424 in accordance withembodiments of the present invention is shown. Although a singlesegregated zone 424 is illustrated in FIG. 4, it should be understoodthat any number of segregated zones 424 may be included in the presentinvention.

Data storage system 400 includes one expander 140 and eight connectedstorage devices 132, designated storage device 132 a through 132 h.Storage devices 132 b and 132 e are in segregated zone 424, with theother six storage devices 132 are un-segregated. Expander 140 is coupledto storage controller 120, 144, and read/write data 404 is transferredbetween storage controller 120, 144 and expander 140. Storage controller120, 144 in some embodiments is coupled to one or more administrativecomputers 116, 136.

In some embodiments, expander 140 and generates a threshold exceeded 408indication to storage controller 120, 144. This indicates to the storagecontroller 120, 144 that expander 140 has detected a number of errorsassociated with a storage device 132 that exceed default thresholds 336.

In response to receiving threshold exceeded 408, storage controller 120,144 generates a segregate storage device 412 indication to the expander140. This causes expander 140 to segregate the storage device 132corresponding to threshold exceeded 408, for example storage device 132e. When a storage device 132 is segregated, read/write data 404 issuspended to and from the storage device 132, and the expander 140prevents the storage device 132 from participating in device discoveryprocesses.

At the same time, or after storage controller 120, 144 generatessegregate storage device 412 to expander 140, storage controller 120,144 generates change status 416 to one or more administrative computers116, 136. Change status 416 informs the administrative computer, or auser/system administrator using the administrative computer 116, 136that a storage device 132 has been segregated and placed into segregatedzone 424. In some embodiments, administrative computer 116, 136 or auser/system administrator using the administrative computer 116, 136decides to override the segregation decision made by storage controller120, 144. An override decision may be made if the data storage system400 cannot tolerate another storage device 132 being taken off-line andplaced into segregated zone 424. For example, if storage devices 132a-132 h represent an eight drive RAID 5 volume, and storage device 132 bis already in the segregated zone 424, placing storage device 132 e intosegregated zone 424 results in taking two storage devices 132 off-linein a RAID volume that can only tolerate one storage device 132 failureor off-line at a time. Such action will result in loss of data, or atleast an inability to access the RAID volume represented by storagedevices 132 a-132 h. Therefore, a user or management program associatedwith administrative computer 116, 136 may recognize this condition andprevent a second storage device 132 e from being taken off-line.Administrative computer 116, 136 prevents taking storage device 132 eoff-line by generating change configuration 420 to storage controller120, 144. In response to receiving change configuration 420 fromadministrative computer 116, 136, storage controller 120, 144 generatesun-segregate storage device 428 to expander 140. Un-segregate storagedevice 428 causes expander 140 to remove storage device 132 e fromsegregated zone 424. Many other embodiments are possible between theexpander 140, storage controller 120, 144, and administrative computer116, 136. Several of the embodiments are illustrated in FIGS. 6 a-6 f.

Referring now to FIG. 5, a block diagram illustrating PHY error counters504, 508 for a bidirectional link between an expander 140 and a storagedevice 132 in accordance with embodiments of the present invention isshown. PHY error counters 504, 508 maintain running counts of errorsassociated with storage device 132 or the link between expander 140 andstorage device 132. Although the type of counters provided in expander140 and storage device 132 may differ or change in newer components,examples of error counters commonly provided in PHY error counters 504,508 include invalid DWORD count, disparity error count, loss of DWORDsynchronization count, PHY reset problem count, and code violationcount.

As described previously with respect to FIGS. 1 a-1 d and FIG. 3,bidirectional links between expander 140 and storage device 132 utilizea single lane consisting of a transmit path from the expander 140 to thestorage device 132, and a receive path from the storage device 132 tothe expander 140. Storage device 132 includes a storage device PHY 512,which has a receive port 520, a transmit port 516, and storage devicePHY error counters 508. Expander CPU 304 is able to read the storagedevice PHY error counters 508 over the bidirectional link, andtemporarily store the current storage device PHY error counts inexpander memory 308. Expander PHY 312 includes expander PHY errorcounters 504, which maintain error counts associated with receive framesthrough receive port 320. Expander CPU 304 reads expander PHY errorcounters 504, and temporarily stores the current expander PHY errorcounts in expander memory 308. Either expander PHY error counters 504 orstorage device PHY error counters 508, or both, produce a count ofdetected errors for the link. In some embodiments, expander CPU 304compares the storage device PHY error counts and expander PHY errorcounts to default thresholds 336 in order to determine if storage device132 should be placed in a segregated zone.

Referring now to FIG. 6 a, a block diagram illustrating a data storagesystem using expander 140 control in accordance with the preferredembodiment of the present invention is shown. Expander 140 control iswhere expander 140 makes decisions to segregate or un-segregate a givenstorage device 132.

Expander 140 determines error counts associated with storage device 132are above default thresholds 336, and segregates storage device 132. Insome embodiments, expander 140 then transmits storage device placed insegregated zone 604 to storage controller 120, 144. This informs thestorage controller 120, 144 that the expander 140 has placed storagedevice 132 into a segregated zone 424. However, in some embodiments,expander 140 may not transmit storage device placed in segregated zone604 to storage controller 120, 144, and may instead operate completelyautonomously without notifying any other storage controller 120, 144 oradministrative computer 116, 136.

In some embodiments, storage controller 120, 144 transmits storagedevice in segregated zone 608 to administrative computer 116, 136.Administrative computer 116, 136 in some embodiments may log thisinformation, and in other embodiments may indicate to a user or systemadministrator through a GUI or other user interface that storage device132 has been placed in a segregated zone 424.

While storage device 132 is within the segregated zone 424, expander 140conducts various tests to storage device 132, in order to determine ifstorage device 132 is able to return to normal operation. The tests mayinclude any of monitoring the link to storage device 132 in the absenceof any I/O transfers, executing read buffer and/or write buffer commandsto storage device 132, or downshifting transmission speed of the linkbetween expander 140 and storage device 132. Other suitable tests may bepossible.

If the expander 140 is able to complete the executed tests, expander 140transmits storage device removed from segregated zone 612 to storagecontroller 120, 144. This communicates to the storage controller 120,144 that normal data I/O read and write operations may be resumed tostorage device 132, and that storage device 132 will participate indevice discovery operations as required.

In some embodiments, storage controller 120, 144 transmits storagedevice out of segregated zone 616 to administrative computer 116, 136.Administrative computer 116, 136 then displays to a user or systemadministrator that storage device 132 is not in a segregated zone 424.FIG. 6 a is considered the preferred embodiment because segregationdecisions do not depend on either storage controller 120, 144 oradministrative computer 116, 136. Depending on the behavior of a storagedevice 132, links 236 and/or 156 may become effectively unusable due tolink up/down reporting and broadcast messaging, resulting in storagecontroller 120, 144 effectively unable to respond to status reportingfrom expander 140. The embodiments of FIGS. 6 a and 6 b allow expander140 to make the initial segregation decision, resulting in clearcommunication over links 236 and/or 156.

Referring now to FIG. 6 b, a block diagram illustrating a data storagesystem using expander 140 control with storage controller 120, 144override in accordance with embodiments of the present invention isshown. FIG. 6 b is similar to FIG. 6 a, but provides the capability forstorage controller 120, 144 to override segregation decisions made byexpander 140.

After receiving storage device placed in segregated zone 604 fromexpander 140, storage controller 120, 144 determines the data storagesystem cannot allow storage device 132 to be placed in a segregated zone424. One example of why this may be necessary is if storage device 132is a new type of storage device in the data storage system, and theexpander 140 is not been updated with PHY parameters and defaultthresholds 336 reflecting the new type of storage device. Anotherexample of why this may be necessary is if a RAID-based logical volumeincludes storage device 132, and the RAID-based logical volume isalready in a degraded condition. Logical volumes integrated conditionscannot tolerate loss of another storage device 132, and isolatinganother storage device 132 may result in loss of data or lack of accessto data and the logical volume. After storage controller 120, 144determines the data storage system cannot allow storage device 132 to beplaced in a segregated zone 424, storage controller 120, 144 transmitsremove storage device from segregated zone 620 to expander 140. Expander140 then removes storage device 132 from the segregated zone 424, andresponsively transmits storage device removed from segregated zone 612to storage controller 120, 144.

In some embodiments, storage controller 120, 144 transmits storagedevice in segregated zone 608 and storage device out of segregated zone616 to administrative computer 116, 136. Administrative computer 136 maylog the data, or display the segregated status of storage device 132 toa user or system administrator.

Referring now to FIG. 6 c, a block diagram illustrating a data storagesystem using expander 140 control with administrative computer 116, 136override in accordance with embodiments of the present invention areshown. FIG. 6 c is similar to FIG. 6 b, but provides administrativecomputer 116, 136 override of segregation decisions by the expander 140instead of storage controller 120, 144 in FIG. 6 b.

After receiving storage device in segregated zone 608 from storagecontroller 120, 144, administrative computer 116, 136 (or a user orsystem administrator associated with administrative computer 116, 136)decides to override the segregation decision made by the expander 140.Administrative computer 116, 136 generates a command remove storagedevice from segregated zone 624 to storage controller 120, 144. Inresponse, storage controller 120, 144 transmits remove storage devicefrom segregated zone 620 to expander 140. Expander 140 then removesstorage device 132 from the segregated zone 424, and transmits storagedevice removed from segregated zone 612 to storage controller 120, 144.Storage controller 120, 144 transmits storage device out of segregatedzone 616 to administrative computer 116, 136. As before, administrativecomputer 116, 136 may display the current state of storage device 132 toa user or system administrator.

Referring now to FIG. 6 d, a block diagram illustrating a data storagesystem using storage controller 120, 144 control in accordance withembodiments of the present invention. This embodiment providessegregation decision making capability in the storage controller 120,144 instead of the expander 140. The expander 140 therefore reportserror counts, test status, and storage device 132 status to storagecontroller 120, 144.

Expander 140 transmits storage device error counts 628 to storagecontroller 120, 144. In one embodiment, storage device error counts 628are transmitted from expander 140 to storage controller 120, 144 eachtime a new error is detected by expander 140. In another embodiment,storage controller 120, 144 periodically polls expander 140 for errorcounts 628, and expander 140 responsively provides the current errorcounts 628 to storage controller 120, 144. Based on the storage deviceerror counts 628, storage controller 120, 144 transmits place storagedevice into segregated zone 632 to expander 140. Expander 140 thenresponsively places storage device 132 into a segregated zone 424. Oncein the segregated zone 424, storage device 132 is tested by expander 140in order to determine if storage device 132 is able to resume normaloperation. When the test sequence is completed, expander 140 transmitsstorage device test results 636 to storage controller 120, 144. Based onthe storage device test results 636, storage controller 120, 144 maytransmit remove storage device from segregated zone 620 to expander 140.In response to receiving remove storage device from segregated zone 620from storage controller 120, 144, expander 140 removes storage device132 from the segregated zone 424.

Optionally, storage controller 120, 144 may transmit storage device insegregated zone 608 to administrative computer 116, 136 in order tocommunicate to a user or system administrator that storage device 132has been placed in a segregated zone 424. Additionally, storagecontroller 120, 144 may generate storage device out of segregated zone616 to administrative computer 116, 136 in order to communicate to auser or system administrator that storage device 132 has been removedfrom the segregated zone 424.

Referring now to FIG. 6 e, a block diagram illustrating a data storagesystem using storage controller 120, 144 control with administrativecomputer 116, 136 override in accordance with embodiments of the presentinvention is shown. The embodiment of FIG. 6 e is similar to FIG. 6 d,however the embodiment of FIG. 6 e provides more information from thestorage controller 120, 144 to the administrative computer 116, 136 sothat the administrative computer 116, 136 may overridesegregate/un-segregate decisions made by storage controller 120, 144.

Expander 140 provides storage device error counts 628 to storagecontroller 120, 144. In response, storage controller 120, 144 provideserror counts to administrative computer 640 to administrative computer116, 136. If storage controller 120, 144 determines the error countswarrant placing the storage device 132 into the segregated zone 424, thestorage controller 120, 144 transmits place storage device intosegregated zone 632 to expander 140 and transmits storage device insegregated zone 608 to administrative computer 116, 136.

In response to receiving place storage device into segregated zone 632from storage controller 120, 144, expander 140 places storage device 132into the segregated zone 424 and begins segregated zone testing ofstorage device 132. While this is occurring, administrative computer116, 136 reviews the error counts 640 and may determine the error counts640 do not warrant placing the storage device 132 into the segregatedzone 424. In that case, administrative computer 116, 136 generates acommand remove storage device from segregated zone 624 to storagecontroller 120, 144. In response, storage controller 120, 144 generatesremove storage device from segregated zone 620, and expander 140responsively removes storage device 132 from the segregated zone 424. Ifadministrative computer 116, 136 does not determine the error counts 640warrant removing the storage device 132 from the segregated zone 424,administrative computer 116, 136 then waits for test results 644.

When expander 140 completes the testing to storage device 132, expander140 transmits storage device test results 636 to storage controller 120,144. In response, storage controller 120, 144 transmits test results toadministrative computer 644. Based on the test results 644, storagecontroller 120, 144 may transmit remove storage device from segregatedzone 620 to expander 140 and storage device out of segregated zone 616to administrative computer 116, 136. If the test results 636 did notwarrant storage controller 120, 144 removing storage device 132 from thesegregated zone 424, it is still possible that administrative computer116, 136 may override storage controller 120, 144, based on the testresults 644. In that case, administrative computer 116, 136 transmitscommand remove storage device from segregated zone 624 to storagecontroller 120, 144. In response, storage controller 120, 144 generatesremove storage device from segregated zone 620 to expander 140, andexpander 140 removes storage device 132 from the segregated zone 424 andtransmits storage device removed from segregated zone 612 to storagecontroller 120, 144. Finally, storage controller 120, 144 transmitsstorage device out of segregated zone 616 to administrative computer116, 136.

Referring now to FIG. 6 f, a block diagram illustrating a data storagesystem using administrative computer 116, 136 control in accordance withembodiments of the present invention is shown. FIG. 6 f illustratesembodiments where the storage controller 120, 144 passes through errorcounts and test results between expander 140 and administrative computer116, 136, and administrative computer 116, 136 or a user/systemadministrator associated with administrative computer 116, 136 makessegregate/un-segregate decisions for storage device 132.

As in previous embodiments, expander 140 transmits storage device errorcounts 628 to storage controller 120, 144. In response, storagecontroller 120, 144 transmits error counts to administrative computer640 to the administrative computer 116, 136. Based on the error counts640, administrative computer 116, 136 transmits command place storagedevice into segregated zone 648 to storage controller 120, 144. Storagecontroller 120, 144 the responsively transmits place storage device intosegregated zone 632 to expander 140, thereby causing expander 140 toplace storage device 132 into a segregated zone 424 and initiatesegregated zone testing for storage device 132. When expander 140 hascompleted testing storage device 132, expander 140 transmits storagedevice test results 636 to storage controller 120, 144. In response,storage controller 120, 144 transmits storage device test results toadministrative computer 644 to administrative computer 116, 136.

Based on the test results 644, administrative computer 116, 136 maydetermine storage device 132 should be removed from the segregated zone424, and responsively transmits command remove storage device fromsegregated zone 624 to storage controller 120, 144. In response toreceiving a command remove storage device from segregated zone 624 fromadministrative computer 116, 136, storage controller 120, 144 transmitsremove storage device from segregated zone 620 to expander 140. Thiscauses expander 140 to remove storage device 132 from the segregatedzone 424.

Referring now to FIG. 7, a flowchart illustrating expander 140initialization in accordance with embodiments of the present inventionis shown. Flow begins at block 704.

At block 704, expander 140 powers-up or is manually reset by storagecontroller 120, 144. Flow proceeds to block 708.

At block 708, expander 140 reads expander boot code 328 from externalnon-volatile memory 324, and configures itself. Expander boot code 328includes initialization diagnostics, default analog PHY settings, anddefault expander 140 operating parameters. Flow proceeds to block 712.

At block 712, expander 140 reads customer-specific code 332 fromexternal non-volatile memory 324 and configures each PHY 312 withbaseline parameters including default error thresholds 336. Defaulterror thresholds 336 are used by expander 140 unless storage controller120, 144 either updates customer-specific code 332 in externalnon-volatile memory 324 or overwrites default error thresholds inexpander 140. Flow proceeds to block 716.

At block 716, expander 140 performs link training for each associatedlink, using baseline parameters, to establish initial transmission speedfor each link. In some embodiments, the initial transmission speed for agiven link will be the maximum transmission speed supported on the givenlink. In other embodiments, the initial transmission speed for a givenlink will be the minimum transmission speed supported on the given link.In yet other embodiments, the initial transmission speed for a givenlink will be an intermediate transmission speed supported on the givenlink. Flow ends at block 716.

Referring now to FIG. 8, a flowchart illustrating expander 140 controlof a segregated zone 424 in accordance with embodiments of the presentinvention is shown. Flow begins at block 804.

At block 804, the expander 140 detects an error corresponding to thelink. Errors corresponding to the link may either be storage device 132errors, or errors reflecting transmission problems between expander 140and a storage device 132. Flow proceeds to block 808.

At block 808, expander 140 identifies the type of error. As discussedwith respect to FIG. 5, multiple error types are supported by expanders140 and storage devices 132. Therefore, it is important to identify thetype of error that has been detected by expander 140. Flow proceeds toblock 812.

At block 812, expander 140 increments an error count corresponding tothe type of error in the link. It is expected that multiple error countswill be maintained simultaneously by the expander 140, corresponding tolink errors and storage device 132 errors. Flow proceeds to decisionblock 816.

At decision block 816, the expander 140 determines if the countcorresponding to the detected error is above an error threshold 340. Theerror threshold 340 is specific to the type of error and thelink/storage device 132 corresponding to the error. If the error countis not above the corresponding error threshold 340, then flow proceedsto block 804 to detect a next error. If the error count is above thecorresponding error threshold 340, then flow proceeds to block 820.

At block 820, the expander 140 places the storage device 132 into asegregated zone 424. In one embodiment, the segregated zone 424 iscommon for all storage devices 132 in the data storage system. In otherembodiments, the segregated zone 424 is unique to either the expander140 or the storage controller 120, 144. Flow proceeds to optional block824 and blocks 904 and 908 of FIG. 9.

There are several possible outcomes once a storage device 132 is placedinto a segregated zone 424. First, a storage device 132 may remain inthe segregated zone 424 because it doesn't pass the tests illustrated inFIG. 9. Second, a storage device 132 may remain in the segregated zone424 because it doesn't pass other tests as directed by a storagecontroller 120,144 or administrative computer 116,136. Third, a storagedevice 132 may remain in the segregated zone 424 because the storagecontroller 120,144 or administrative computer 116, 136 overrides anexpander 140 segregation decision and forces it to remain there (notesting or other action taken). Fourth, a storage device 132 may beremoved from the segregated zone 424 because the storage device 132passes the tests illustrated in FIG. 9. Fifth, a storage device 132 maybe removed from the segregated zone 424 because it passes other tests asdirected by a storage controller 120,144 or administrative computer116,136. Sixth, the storage device 132 may be removed from thesegregated zone 424 because it a storage controller 120,144 oradministrative computer 116,136 overrides a segregation decision,independent of any tests.

Once a storage device 132 is in a segregated zone 242, in someembodiments a storage controller 120, 144 is able to read metadata fromstorage device 132 using proxy I/O. A newly added storage device 132 maybe an important part of a RAID volume, but the storage controller 120,144 may not have that information available without being able to readmetadata off the storage device 132. The storage controller 120, 144 oradministrative computer 116,136 through proxy I/O can perform readcommands to the storage device 132 in order to determine how importantthe storage device 132 is to the system. In turn, this knowledge willallow the storage controller 120, 144 to properly raise or lower theerror thresholds 248, 340 or test thresholds 252, 344 for the storagedevice 132 in question. One reason to raise a threshold if it isdetermined the storage device 132 is a spare; lowering would be done ifthe storage device 132 was a final critical member of a RAID volume. Thestorage controller 120, 144 issues a vendor unique “proxy read” commandto expander 140, which in turn causes expander 140 to issue a read tostorage device 132. The storage device 132 returns requested metadata tostorage controller 120, 144 in response to the proxy read request.

In some embodiments, a storage device 132 may be allowed to be writtento while in a segregated zone 424. For example, a proxy write could beissued to allow critical storage controller 120, 144 cache/coherencydata to be written to the storage device 132 as a means to flush cache,perhaps following a loss of main power to the storage controller 120,144. However, new data writes received by a storage controller 120, 144are generally not allowed to be written to any storage devices 132 in asegregated zone 424.

At optional block 824, the expander 140 notifies the storage controller120, 144 it has placed the storage device 132 into a segregated zone424. In some embodiments, optional blocks 824 and 828 are not performedif the expander 140 performs no reporting of segregation decisions.Block 824 is illustrated in more detail in FIG. 13 a. Flow proceeds tooptional block 828.

At optional block 828, the storage controller 120, 144 notifiesadministrative computer 116, 136 it has placed the storage device 132into a segregated zone 424. This level of notification allows a user orsystem administrator associated with administrative computer 116, 136 tobe notified of the segregation decision. Block 828 is illustrated inmore detail in FIG. 14 a. Flow proceeds to blocks 904 and 908 of FIG. 9.

Referring now to FIG. 9, a flowchart illustrating expander 140 linktesting in accordance with embodiments of the present invention isshown. Expander 140 link testing is initiated when a storage device 132is placed into a segregated zone. Expander link testing may be a singletest, a group of repeated tests, a group of different tests, ordifferent groups of repeated tests. Flow begins at blocks 904 and 908.

At block 904, the expander 140 monitors the link between the expander140 and the storage device 132 for a predetermined time period. In oneembodiment the predetermined time is one second. In other embodiments,the predetermined time period is less than or more than one second. Flowproceeds to decision block 912.

At block 908, the expander 140 executes a read buffer or write buffercommand to the storage device 132. Read buffer and write buffer commandsdo not alter data stored on physical media of the storage device 132,but instead read or write to a semiconductor buffer of the storagedevice 132 external to the physical media. Therefore read buffer andwrite buffer commands do not alter data stored on physical media, anderrors detected during read buffer and write buffer commands do notreflect data errors on the physical media of the storage device 132.Flow proceeds to decision block 912.

At decision block 912, the expander 140 determines if an error has beendetected. If an error has been detected, then flow proceeds to block916. If an error has not been detected, then flow proceeds to decisionblock 924.

At block 916, the expander 140 identifies the type of error that hasbeen detected. As stated previously, the error may be one of severaltypes of errors, including CRC errors. Flow proceeds to block 920.

At block 920, the expander 140 increments a test count corresponding tothe type of error and the link. The test counts of block 920 aredifferent and independent from the error counts of blocks 804-816,1104-1120, and 1204-1224. Flow proceeds to decision block 924.

At decision block 924, the expander 140 determines if the end of thetests has been reached. If the end of the tests has not been reached,then flow proceeds to blocks 904 and 908 to continue the tests. If theend of the tests has been reached, then flow proceeds to decision block928.

At decision block 928, the expander 140 determines if the test count isabove a test count threshold 344. The test count represents the numberof errors detected during the testing steps in blocks 904-924. The testcount threshold 344 is stored within default thresholds 336 incustomer-specific code 332. If the test count is not above the testcount threshold 344, then flow proceeds to block 932. If the test countis above the test count threshold 344, then flow proceeds to decisionblock 940.

At block 932, the expander 140 resets both the error count and the testcount corresponding to the link and the storage device 132 that wasundergoing testing. Flow proceeds to block 936.

At block 936, the expander 140 removes the storage device 132 from thesegregated zone 424. At this point, the storage device 132 returns tonormal operation. During normal operation, data reads and data writesare made to storage device 132 by storage controller 120, 144, andstorage device 132 is allowed to participate in device discoveryprocesses. Flow proceeds to block 804 of FIG. 8 to detect errors innormal operation.

At decision block 940, the storage device 132 and corresponding linkhave failed the test process and the expander 140 determines if a lowerlink transmission speed is available. If the current link transmissionspeed is 6 MB/s and the link supports 3 MB/s operation, a lower linktransmission speed is available. If the current link transmission speedis 3 MB/s and the link supports only 3 MB/s and 6 MB/s transmissionspeeds, no lower link transmission speeds are available. If a lower linktransmission speed is not available, then flow proceeds to blocks 1004,1008, and 1016 of FIG. 10. If a lower link transmission speed isavailable, then flow proceeds to block 944.

At block 944, the expander 140 reduces the link transmission speed tothe next lower supported link transmission speed. Sometimes, when linktesting fails a given link transmission speed, it may pass at a lowerlink transmission speed. Flow proceeds to block 948.

At block 948, the expander 140 resets the test count, in preparation forrestarting the storage device 132 when corresponding link tests. Flowproceeds to blocks 904 and 908 to restart the tests.

Referring now to FIG. 10, a flowchart illustrating expander 140 linktesting failure in accordance with embodiments of the present inventionis shown. Flow begins at blocks 1004, 1008, and 1016. FIG. 10 is invokedin the link testing process whenever the tests have failed, and no lowerlink transmission speeds are available to the expander 140. It should beunderstood that blocks 1004, 1008, and 1016 are alternatives that may beexecuted by expander 140, depending on system objectives. Therefore,only one of blocks 1004, 1008, and 1016 are executed in any embodimentof expander 140 link testing failure.

At block 1004, the storage device 132 remains in the segregated zone 424until the expander 140 receives a command from the storage controller120, 144 to remove storage device 132 from the segregated zone 424. Insome embodiments, the storage controller 120, 144 may elect to takestorage device 132 out of segregated zone 424 after some period of timehas elapsed. In other embodiments, the storage controller 120, 144 mayelect to take storage device 132 out of segregated zone 424 afterstorage device 132 has been replaced. Flow ends at block 1004.

At block 1008, expander 140 notifies the storage controller 120, 144that the storage device 132 fails segregated zone 424 tests at thelowest supported link transmission speed. Flow proceeds to block 1012.

At block 1012, storage controller 120, 144 commands expander 140 topower-down storage device 132. Flow proceeds to block 1016.

At block 1016, expander 140 powers down storage device 132, and notifiesstorage controller 120, 144 that storage device 132 has beenpowered-down. Flow proceeds to block 1020.

At block 1020, storage controller 120, 144 notifies an administrativecomputer 116, 136 that storage device 132 has been powered-down. Flowproceeds to block 1024.

At block 1024, administrative computer 116, 136 notifies a user orsystem administrator that the storage device 132 has been powered-down,and provides recommended action to the user or system administrator.Notification is typically provided by a graphical user interface (GUI),although a notification may be posted to a log or provided in some otherfashion. The recommended action may take several forms, depending onsystem objectives. In one embodiment, the recommended action may to beto replace the storage device 132. In yet another embodiment, therecommended action may be to check the type, model number, or serialnumber of storage device 132 and compare to an approved storage device132 list. Flow ends at block 1024.

Referring now to FIG. 11, a flowchart illustrating storage controller120, 144 control of a segregated zone 424 in accordance with embodimentsof the present invention is shown. The embodiment of FIG. 11 is analternative to the embodiment of FIG. 8, and may be more desirable fordata storage systems with simplified expander 140 functionality. Flowbegins at block 1104.

At block 1104, expander 140 detects an error corresponding to the link.The error may correspond to a storage device 132 attached to the link,or the link itself. Flow proceeds to block 1108.

At block 1108, expander 140 notifies storage controller 120, 144 aboutthe error corresponding to the link. Flow proceeds to block 1112.

At block 1112, storage controller 120, 144 identifies the type of errorcorresponding to the link. Flow proceeds to block 1116.

At block 1116, storage controller 120, 144 increments an error countcorresponding to the type of error and the link. Therefore, for eachlink attached to expander 140, storage controller 120, 144 maintainsseparate error counts for each type of error. Flow proceeds to decisionblock 1120.

At decision block 1120, storage controller 120, 144 determines if theerror count is above an error threshold 248. The error threshold 248 isstored in revised thresholds 244 in storage controller memory 208. Ifthe error count is not above the error threshold 248, then flow proceedsto block 1104 to wait for the next error reported by expander 140. Ifthe error count is above the error threshold 248, then flow proceeds toblock 1124.

At block 1124, storage controller 120, 144 sends a command to expander140 to place the storage device 132 into a segregated zone 424. Flowproceeds to block 1128.

At block 1128, expander 140 places the storage device 132 into asegregated zone 424. At this point segregated zone 424 testing isinitiated and flow proceeds to optional block 1132 and blocks 904 and908 of FIG. 9.

At optional block 1132, storage controller 120, 144 notifiesadministrative computer 116, 136 it has placed storage device 132 into asegregated zone 424. Notification of administrative computer 116, 136 isoptional. It is desirable if users or system administrators need to beinformed of the segregation status of each storage device 132. Block1132 is illustrated in more detail in FIG. 14 a. Flow proceeds to blocks904 and 908 of FIG. 9.

In some embodiments, storage controller 120, 144 issues commands toexpander 140, reflecting either segregation decisions made by storagecontroller 120, 144 (FIG. 11), or storage controller 120, 144 overrideof expander 140 segregation decisions (FIG. 13 a). The commands issuedby storage controller 120, 144 include, but are not limited to:

-   -   Issue proxy read    -   Issue proxy write    -   Perform read test    -   Perform write test    -   Perform action, where action is defined as:        -   power cycle storage device 132        -   change PHY parameters        -   change other low level settings    -   Get statistics returns error counts 628    -   Get/Set slot speed returns transmission speed    -   Get/Set entry threshold (sets error thresholds 248, 340)    -   Get/Set override includes:        -   override for automatic testing to not be initiated        -   storage device 132 to remain in segregated zone 424            regardless of testing outcome        -   force a storage device 132 into a segregated zone 424        -   force a storage device 132 out of a segregated zone 424        -   turn off segregated zone 424 checks    -   Get/Set parameter includes:        -   number of read/write PO's to issue        -   number of retries to issue        -   number of times to loop/repeat specified tests

Referring now to FIG. 12, a flowchart illustrating administrativecomputer 116, 136 control of a segregated zone 424 in accordance withembodiments of the present invention is shown. The embodiment of FIG. 12is an alternative to the embodiment of FIGS. 8 and 11, and may be moredesirable for data storage systems with simplified expander 140 andstorage controller 120, 144 functionality. Flow begins at block 1204.

At block 1204, expander 140 detects an error corresponding to the link.The error may correspond to a storage device 132 attached to the link,or the link itself. Flow proceeds to block 1208.

At block 1208, expander 140 notifies storage controller 120, 144 aboutthe error corresponding to the link. Flow proceeds to block 1212.

At block 1212, the storage controller 120, 144 notifies administrativecomputer 116, 136 about the error corresponding to the link. Flowproceeds to block 1216.

At block 1216, administrative computer 116, 136 identifies the type oferror corresponding to the link. Flow proceeds to block 1220.

At block 1220, administrative computer 116, 136 increments an errorcount corresponding to the type of error and the link. Therefore, foreach link attached to expander 140, administrative computer 116, 136maintains separate error counts for each type of error. Flow proceeds todecision block 1224.

At decision block 1224, administrative computer 116, 136 determines ifthe error count is above an error threshold 248. The error threshold 248is stored in revised thresholds 244 in administrative computer memory208. If the error count is not above the error threshold 248, then flowproceeds to block 1204 to wait for the next error reported by expander140. If the error count is above the error threshold 248, then flowproceeds to block 1228.

At block 1228, administrative computer 116, 136 sends a command tostorage controller 120, 144 to place the storage device 132 into asegregated zone 424. Flow proceeds to block 1232.

At block 1232, storage controller 120, 144 sends a command to expander140 to place the storage device 132 into a segregated zone 424. Flowproceeds to block 1236.

At block 1236, expander 140 places the storage device 132 into asegregated zone 424. At this point segregated zone 424 testing isinitiated and flow proceeds to blocks 904 and 908 of FIG. 9.

In some embodiments, administrative computer 116, 136 issues commands toexpander 140, reflecting either segregation decisions made byadministrative computer 116, 136 (FIG. 12), or administrative computer116, 136 override of expander 140 segregation decisions (FIG. 14 a). Thecommands issued by administrative computer 116, 136 include, but are notlimited to:

-   -   Issue proxy read    -   Issue proxy write    -   Perform read test    -   Perform write test    -   Perform action, where action is defined as:        -   power cycle storage device 132        -   change PHY parameters        -   change other low level settings    -   Get statistics returns error counts 628    -   Get/Set slot speed returns transmission speed    -   Get/Set entry threshold (sets error thresholds 248, 340)    -   Get/Set override includes:        -   override for automatic testing to not be initiated        -   storage device 132 to remain in segregated zone 424            regardless of testing outcome        -   force a storage device 132 into a segregated zone 424        -   force a storage device 132 out of a segregated zone 424        -   turn off segregated zone 424 checks    -   Get/Set parameter includes:        -   number of read/write PO's to issue        -   number of retries to issue        -   number of times to loop/repeat specified tests

Referring now to FIG. 13 a, a flowchart illustrating storage controller120, 144 override of expander 140 segregation in accordance withembodiments of the present invention is shown. FIG. 13 a is invokedwithin block 824 of FIG. 8. Flow begins at block 1304.

At block 1304, storage controller 120, 144 receives notification fromexpander 140 that expander 140 has placed a storage device 132 into asegregated zone 424. Flow proceeds to block 1308 and decision block1324.

At block 1308, storage controller 120, 144 obtains error counts 628 fromexpander 140. Flow proceeds to block 1312.

At block 1312, for each error count 628, storage controller 120, 144identifies the type of error corresponding to the error count 628. Flowproceeds to block 1316.

At block 1316, storage controller 120, 144 compares each identifiederror count 628 to one or more revised error thresholds 248 stored instorage controller 120, 144. Flow proceeds to decision block 1320.

At decision block 1320, the storage controller 120, 144 determines ifany error counts 628 are above revised error thresholds 248 stored instorage controller 120, 144. If any error counts 628 are above revisederror thresholds 248 stored in storage controller 120, 144, then storagecontroller 120, 144 has determined that storage device 132 hasexperienced a sufficient number of errors to be placed in a segregatedzone 424, no segregation override occurs, and flow proceeds to block 828of FIG. 8. If no error counts 628 are above revised error thresholds 248stored in storage controller 120, 144, then storage controller 120, 144has determined that storage device 132 has not experienced a sufficientnumber of errors to be placed in a segregated zone 424, storage device132 is to be removed from the segregated zone 424, and flow proceeds toblock 1328.

At decision block 1324, storage controller 120, 144 determines if anyother override conditions have been met. Other override conditionsinclude, but are not limited to the logical volume including storagedevice 132 is already in a critical state, and removing storage device132 from normal operation by placing into a segregated zone 424 mayresult in loss of data or data corruption. If the storage controller120, 144 determines that one or more other override conditions have beenmet, then flow proceeds to block 1328. If the storage controller 120,144 does not determine that one or more other override conditions havebeen met, then an override of a segregation decision by expander 140 isnot required, and flow proceeds to block 828 of FIG. 8.

At block 1328, storage controller 120, 144 sends a command 620 to theexpander 140 to remove storage device 132 from a segregated zone 424.This directs the expander 140 to remove storage device 132 from asegregated zone 424, provided storage device 132 is already in asegregated zone 424. Flow proceeds to block 1332.

At block 1332, expander 140 removes storage device 132 from segregatedzone 424. Flow ends at block 1332.

Referring now to FIG. 13 b, a flowchart illustrating storage controller120, 144 segregation not based on error counts in accordance withembodiments of the present invention is shown. FIG. 13 b is invoked atany time, depending on when storage controller 120, 144 detects acondition requiring storage device 132 to be placed into a segregatedzone 424, regardless of error counts. Flow begins at block 1336.

At block 1336, storage controller 120, 144 detects a condition requiringstorage device 132 to be placed into a segregated zone 424. In oneembodiment, the condition requiring storage device 132 to be placed intoa segregated zone 424 is where storage controller 120, 144 detectsstorage device 132 is not an approved storage device, and may not workreliably. In that case, placing storage device 132 into a segregatedzone advantageously keeps storage device 132 from storing user data orparticipating in device discovery processes. In another embodiment,storage controller 120, 144 places storage device 132 into a segregatedzone 424 after it is determined a computer virus is present in storagecontroller 120, 144, or a computer in data storage system 100, 104, 108,or 112, including administrative computer 116, 136. In anotherembodiment, storage controller 120, 144 or a computer in data storagesystem 100, 104, 108, or 112, including administrative computer 116, 136determines data to be written to storage device 132 includes at least aportion of a computer virus. Flow proceeds to block 1340.

At block 1340, storage controller 120, 144 sends a command 632 toexpander 140 to place storage device 132 into a segregated zone 424.Flow proceeds to optional block 1344 and block 1348.

At optional block 1344, storage controller 120, 144 notifiesadministrative computer 116, 136 it has placed storage device 132 into asegregated zone 424. Administrative computer 116, 136 may provide atextual or other visual notification to a user or system administratorthat storage device 132 has been placed into a segregated zone 424,and/or an event may be logged on the administrative computer 116, 136.Flow ends at optional block 1344.

At block 1348, expander 140 places storage device 132 into a segregatedzone 424. Since the override process of FIG. 13 b is not invoked basedon error counts 628, it is unlikely for expander 140 to initiate thetest process of FIG. 9. Instead, a user or system administrator may takesome action possibly including removing or replacing storage device 132.Flow ends at block 1348.

Referring now to FIG. 14 a, a flowchart illustrating administrativecomputer 116, 136 override of expander 140 segregation in accordancewith embodiments of the present invention is shown. Flow begins at block1404.

At block 1404, administrative computer 116, 136 receives notificationfrom storage controller 120, 144 that expander 140 has placed a storagedevice 132 into a segregated zone 424. Flow proceeds to block 1408 anddecision block 1424.

At block 1408, administrative computer 116, 136 obtains error counts 640from storage controller 120, 144. Flow proceeds to block 1412.

At block 1412, for each error count 640, administrative computer 116,136 identifies the type of error corresponding to the error count 640.Flow proceeds to block 1416.

At block 1416, administrative computer 116, 136 compares each identifiederror count 640 to one or more revised error thresholds 248 stored inadministrative computer 116, 136. Flow proceeds to decision block 1420.

At decision block 1420, administrative computer 116, 136 determines ifany error counts 640 are above revised error thresholds 248 stored inadministrative computer 116, 136. If any error counts 640 are aboverevised error thresholds 248 stored in administrative computer 116, 136,then administrative computer 116, 136 has determined that storage device132 has experienced a sufficient number of errors to remain insegregated zone 424, no segregation override occurs, and flow proceedsto blocks 904 and 908 of FIG. 9. If no error counts 640 are aboverevised error thresholds 248 stored in storage controller 120, 144, thenstorage controller 120, 144 has determined that storage device 132 hasnot experienced a sufficient number of errors to be placed in asegregated zone 424, storage device 132 is to be removed from thesegregated zone 424, and flow proceeds to block 1428.

At decision block 1424, administrative computer 116, 136 determines ifany other override conditions have been met. Other override conditionsinclude, but are not limited to the logical volume including storagedevice 132 is already in a critical state, and removing storage device132 from normal operation by placing into a segregated zone 424 mayresult in loss of data or data corruption. If the administrativecomputer 116, 136 determines that one or more other override conditionshave been met, then flow proceeds to block 1428. If the administrativecomputer 116, 136 does not determine that one or more other overrideconditions have been met, then an override of a segregation decision byexpander 140 or storage controller 120, 144 is not required, and flowproceeds to blocks 904 and 908 of FIG. 9.

At block 1428, administrative computer 116, 136 sends a command 624 tostorage controller 120, 144 to remove storage device 132 from segregatedzone 424. This directs the storage controller 120, 144 to remove storagedevice 132 from a segregated zone 424, provided storage device 132 isalready in a segregated zone 424. Flow proceeds to block 1432.

At block 1432, storage controller 120, 144 sends a command 620 to theexpander 140 to remove storage device 132 from a segregated zone 424.This directs the expander 140 to remove storage device 132 from asegregated zone 424, provided storage device 132 is already in asegregated zone 424. Flow proceeds to block 1436.

At block 1436, expander 140 removes storage device 132 from segregatedzone 424. Flow ends at block 1436.

Referring now to FIG. 14 b, a flowchart illustrating administrativecomputer 116, 136 segregation not based on error counts in accordancewith embodiments of the present invention is shown. FIG. 14 b is invokedat any time, depending on when administrative computer 116, 136 detectsa condition requiring storage device 132 to be placed into a segregatedzone 424, regardless of error counts. Flow begins at block 1440.

At block 1440, administrative computer 116, 136 detects a conditionrequiring storage device 132 to be placed into a segregated zone 424. Inone embodiment, the condition requiring storage device 132 to be placedinto a segregated zone 424 is where administrative computer 116, 136detects storage device 132 is not an approved storage device, and maynot work reliably. In that case, placing storage device 132 into asegregated zone 424 will keep storage device 132 from storing user dataor participating in device discovery processes. In another embodiment,administrative computer 116, 136 places storage device 132 into asegregated zone 424 after it is determined a computer virus is presentin storage controller 120, 144, or a computer in data storage system100, 104, 108, or 112, including administrative computer 116, 136. Inanother embodiment, storage controller 120, 144 or a computer in datastorage system 100, 104, 108, or 112, including administrative computer116, 136 determines data to be written to storage device 132 includes atleast a portion of a computer virus. Flow proceeds to block 1444.

At block 1444, administrative computer 116, 136 sends a command 648 tostorage controller 120, 144 to place storage device 132 into asegregated zone 424. Flow proceeds to block 1448.

At block 1448, storage controller 120, 144 sends a command 632 toexpander 140 to place storage device 132 into a segregated zone 424.Flow proceeds to optional block 1452 and block 1456.

At optional block 1452, storage controller 120, 144 notifiesadministrative computer 116, 136 it has placed storage device 132 into asegregated zone 424. Administrative computer 116, 136 may provide atextual or other visual notification to a user or system administratorthat storage device 132 has been placed into a segregated zone 424,and/or an event may be logged on the administrative computer 116, 136.Flow ends at optional block 1452.

At block 1456, expander 140 places storage device 132 into a segregatedzone 424. Since the override process of FIG. 14 b is not invoked basedon error counts 628, it is unlikely for expander 140 to initiate thetest process of FIG. 9. Instead, a user or system administrator may takesome action possibly including removing or replacing storage device 132.Flow ends at block 1456.

Finally, those skilled in the art should appreciate that they canreadily use the disclosed conception and specific embodiments as a basisfor designing or modifying other structures for carrying out the samepurposes of the present invention without departing from the spirit andscope of the invention as defined by the appended claims.

I claim:
 1. A method for maintaining reliable communication on a linkbetween an expander and a storage device, comprising: detecting, by aprocessor coupled to the link, an error corresponding to the link;maintaining, by the processor, a count of detected errors for the link;and determining, by the processor, if the count of detected errors isabove a first error threshold; if the count of detected errors is notabove the first error threshold, then repeating detecting, maintaining,and determining; and if the count of detected errors is above the firsterror threshold, then placing, by the processor, the storage device intoa segregated zone, wherein placing the storage device into thesegregated zone comprises: suspending data reads and writes to thestorage device; preventing participation by the storage device in devicediscovery processes; and testing, by the processor, the link, whereintesting the link comprises at least one of: monitoring the link for apredetermined time period; downshifting the link to a next lowertransmission speed, if a lower transmission speed is available;performing at least one of read buffer commands and write buffercommands to the storage device; and detecting CRC errors on the linkwhile monitoring the link and performing at least one of read buffercommands and write buffer commands to the storage device.
 2. The methodof claim 1, wherein if the processor determines the CRC errors are abovea second threshold, the processor repeats performing, detecting andcalculating, wherein if the CRC errors are not above the secondthreshold, integrating the link, by the processor.
 3. The method ofclaim 2, wherein integrating the link comprises returning the link toregular operation, wherein regular operation comprises allowing datareads and writes to the storage device and allowing the storage deviceto participate in device discovery processes.
 4. The method of claim 3,wherein at least one of a controller and an administrative computerupdates at least one of the first and second thresholds, wherein thecontroller and administrative computer are coupled to the processor. 5.The method of claim 1, wherein after placing the storage device into thesegregated zone the method further comprising: notifying, by theprocessor, a controller coupled to the processor that the link is abovethe first error threshold.
 6. The method of claim 5, wherein afternotifying the controller that the link is above the first errorthreshold, the method further comprising: transferring, by thecontroller, an indication to an administrative computer coupled to thecontroller that the storage device is in the segregated zone; anddisplaying, by the administrative computer, the storage device in thesegregated zone to a user.
 7. The method of claim 6, wherein afterdisplaying the storage device in the segregated zone to the user, themethod further comprising: receiving, by the administrative computer, auser indication to override segregating the storage device; generating,by the administrative computer, a command to the controller to overridesegregating the storage device; transferring a message by the controllerto the processor to override segregating the storage device; andremoving, by the processor, the storage device from the segregated zone.8. A system for maintaining reliable communication on a link between anexpander and a storage device, comprising: a processor; the storagedevice; and the link, coupled to the processor and the storage device,wherein the processor detects an error corresponding to the link,maintains a count of detected errors for the link, and determines if thecount of detected errors is above a first error threshold, wherein ifthe count of detected errors is not above the first error threshold, theprocessor repeats detects, maintains, and determines, wherein if thecount of detected errors is above the first error threshold, then theprocessor places the storage device into a segregated zone, wherein theprocessor places the storage device into the segregated zone comprisesthe processor suspends data reads and writes to the storage device, theprocessor prevents participation by the storage device in devicediscovery processes, and the processor tests the link, wherein theprocessor tests the link comprises at least one of the processormonitors the link for a predetermined time period, the processordownshifts the link to a next lower transmission speed, if a lowertransmission speed is available, the processor performs at least one ofread buffer commands and write buffer commands to the storage device,and the processor detects CRC errors on the link while the processormonitors the link and performs at least one of read buffer commands andwrite buffer commands.
 9. The system of claim 8, wherein if theprocessor determines the CRC errors are above a second threshold, theprocessor continues to test the link, wherein if the CRC errors are notabove the second threshold, the processor integrates the link.
 10. Thesystem of claim 9, wherein the processor integrates the link comprisesthe processor returns the link to regular operation, wherein regularoperation comprises the processor resumes data reads and writes to thestorage device.
 11. The system of claim 8, wherein the count of detectederrors comprises at least one or more of an error count from the storagedevice, an error count from the expander, and CRC errors correspondingto the link.
 12. The system of claim 8, wherein after the processorplaces the storage device into the segregated zone, the processornotifies a controller coupled to the processor that the link is abovethe first error threshold.
 13. The system of claim 12, wherein after theprocessor notifies the controller, the controller transfers anindication to an administrative computer coupled to the controller thatthe storage device is in the segregated zone and the administrativecomputer displays the storage device in the segregated zone to a user.14. The system of claim 13, wherein after the administrative computerdisplays the storage device in the segregated zone to the user, theadministrative computer receives a user indication to overridesegregating the storage device; in response to the administrativecomputer user receives the user indication to override segregating thestorage device, the administrative computer generates a command to thecontroller to override segregating the storage device, the controllertransfers a message o the processor to override segregating the storagedevice, and the processor removes the storage device from the segregatedzone.
 15. A method for maintaining reliable communication on a linkbetween an expander and a storage device, comprising: detecting, by aprocessor coupled to the link, an error corresponding to the link;providing, by the processor, an indication of the error corresponding tothe link to a controller coupled to the processor; maintaining, by thecontroller, a count of detected errors for the link; and determining, bythe controller, if the count of detected errors is above a first errorthreshold; if the count of detected errors is not above the first errorthreshold, then repeating detecting, providing, maintaining, anddetermining; and if the count of detected errors is above the firsterror threshold, then: transferring, by the controller, a command to theprocessor to place the storage device into a segregated zone; andplacing, by the processor, the storage device into the segregated zone,wherein placing the storage device into the segregated zone comprises:suspending data reads and writes to the storage device; allowingmetadata reads by the controller in order to determine if the storagedevice is part of a RAID volume; foregoing participation by the storagedevice in device discovery processes; and testing, by the processor, thelink, wherein testing the link comprises the controller directing theprocessor to perform at least one of: monitoring the link for apredetermined time period; performing at least one of read buffercommands and write buffer commands to the storage device; and detectingCRC errors on the link while monitoring the link and performing at leastone of read buffer commands and write buffer commands to the storagedevice.
 16. The method of claim 15, wherein in response to testing thelink, the method further comprising: generating, by the processor, testresults to the controller; and ascertaining, by the controller, if thetest results indicate errors are above a second threshold; if the errorsare above the second threshold: commanding, by the controller, theprocessor to repeat monitoring, performing, and detecting; and if theerrors are not above the second threshold: commanding, by thecontroller, the processor to integrate the link; and integrating thelink, by the processor.
 17. The method of claim 16, wherein integratingthe link comprises returning the link to regular operation, whereinregular operation comprises resuming data reads and writes to thestorage device.